﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidad;
using System.Data.SqlClient;
using System.Configuration;

namespace Dao
{
    public class InscripcionQueryDao
    {

        private static SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AcademicoConnectionString"].ConnectionString);
        public static SqlCommand cmd;

        public InscripcionQueryDao()
        {
            
        }

        public static List<InscripcionQuery> Informe(DateTime? fechaDesde, DateTime? fechaHasta, int? curso, int? materia)
        {
            List<InscripcionQuery> listInscrip = new List<InscripcionQuery>();
            string sql = @"SELECT InscripcionXAlumno.fecha, Curso.numAula, Materia.nombre, Docente.apellido, Docente.nombre as nomD
                            FROM            Docente INNER JOIN
                         Asignatura ON Docente.legajo = Asignatura.legDocente INNER JOIN
                         InscripcionXAlumno ON Asignatura.codAsignatura = InscripcionXAlumno.codAsignatura INNER JOIN
                         Curso ON Asignatura.codCurso = Curso.codCurso INNER JOIN
                         Materia ON Asignatura.codMateria = Materia.codMateria
                                where 1 = 1";
            if (curso != null)
                sql += " AND numAula = @NumAula";
            if (materia != null)
                sql += " AND Materia.codMateria = @CodMateria";
            if (fechaDesde != null)
                sql += " AND fecha >= @fechaDesde";
            if (fechaHasta != null)
                sql += " AND fecha <= @fechaHasta";

            try
            {
                cn.Open();
                cmd = new SqlCommand(sql, cn);
                if (curso != null)
                    cmd.Parameters.AddWithValue("@NumAula", curso.Value);
                if (materia != null)
                    cmd.Parameters.AddWithValue("@CodMateria", materia.Value);
                if (fechaDesde != null)
                    cmd.Parameters.AddWithValue("@fechaDesde", fechaDesde.Value);
                if (fechaHasta != null)
                    cmd.Parameters.AddWithValue("@fechaHasta", fechaHasta.Value);

                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    InscripcionQuery insQ = new InscripcionQuery();
                    insQ.apenomD = dr["apellido"].ToString() + ", " + dr["nomD"].ToString();
                    insQ.fecha = (DateTime)dr["fecha"];
                    insQ.materia = dr["nombre"].ToString();
                    insQ.numAula = (int)dr["numAula"];
                    listInscrip.Add(insQ);
                }
                dr.Close();
                cn.Close();
            }
            catch (SqlException ex)
            {
                if (cn.State == System.Data.ConnectionState.Open)
                    cn.Close();
                throw new ApplicationException("ERROR al consultar\n Problemas:" + ex.Message);
            }
            return listInscrip;

        }
    }
}
